今天來練習一個比之前循序搜尋法還要好用的二元搜尋法,程式的時間複雜度比之前學得還要來的少,是一項蠻有效率的方法,基本上分成兩個階段,第一階段先做泡沫排序法之後再做搜尋,而搜尋的方式也蠻特別的,要找的資料必須跟中間的數字來做比較,前置作業先做排序是有好處的,讓資料由小到大先排好,之後都跟中間的來比,如果比中間的資料來得小,代表是在前半部分,相反的如果比中間的資料來得大,就代表位於後半的部分,這對於資料龐大來找的話是非常有效率的方式,直接砍掉一半的可能,緊接著再從剩下一半再找中間的數來比較,又能再砍掉一半的可能,那要怎麼知道裡面沒有要找的資料呢?會假設兩個變數,一個是下界,一個是上界,如果當上界大於下界,就代表裡面沒有你要找的那筆資料。
雖然道理簡單,但是程式碼卻不知道為什麼,一直卡關,可能我很菜吧,目前遇到的問題如下:
主要兩個問題無法克服,第一個是n值取不出來,第二個是因為我是用隨機產生,因此會有數字相同的問題發生,這樣找尋的方式會不會出錯,還在研究中TUT
昨天真的是debug到懷疑人生,但是好險最終還是發現了問題的所在,由於這次遇到的問題真的有點特別,於是我決定在下一篇中來好好談談這個問題怎麼發生的,以及我最後是如何解決的。